#pragma once
#ifndef SYPX_TYPES
#define SYPX_TYPES

#ifdef SYPX_MEMCHECK
#include "nommgr.h"
#endif

#include <string>
#include <vector>
#include <fstream>
#include <glm/glm.hpp>

#ifdef SYPX_MEMCHECK
#include "mmgr.h"
#endif

#include "Base.h"


namespace SypX
{
	typedef unsigned int UInt;
	typedef unsigned char UByte;
	typedef unsigned short UShort;
	typedef char Byte;
	typedef float Float;
	typedef std::string String;
	typedef std::vector<float> FloatArray;
	typedef std::vector<UInt> UIntArray;
	typedef std::vector<UShort> UShortArray;
	typedef std::vector<Byte> ByteArray;
	typedef std::vector<UByte> UByteArray;
	typedef std::ifstream FileInputStream;
	typedef std::ofstream FileOutputStream;
	typedef glm::ivec2 Vec2i;
	typedef glm::vec4 Vec4;
	typedef glm::vec3 Vec3;
	typedef glm::vec2 Vec2;
	typedef glm::mat4x4 Mat4;
	
	enum TextureFormat
	{
		RGBA = 0x1908,
		RGB = 0x1907,
		RGB8 = 0x8051,
		COMPRESSED_RGBA_DXT1 = 0x83F1,
		COMPRESSED_RGB_DXT1 = 0x83F0,
		COMPRESSED_RGBA_DXT3 = 0x83F2,
		COMPRESSED_RGBA_DXT5 = 0x83F3,
#ifdef SYPX_PLATFORM_IPHONE
		ALPHA8 = 0x1906,	//No GL_ALPHA8 on iPhone
#else
		ALPHA8 = 0x803C,		
#endif
		ALPHAX = 0x1906,
		INTENSITY8 = 0x804B,
		CUBE_MAP_POSITIVE_X = 0x8515,
		CUBE_MAP_NEGATIVE_X = 0x8516,
		CUBE_MAP_POSITIVE_Y = 0x8517,
		CUBE_MAP_NEGATIVE_Y = 0x8518,
		CUBE_MAP_POSITIVE_Z = 0x8519,
		CUBE_MAP_NEGATIVE_Z = 0x851A,
		CUBE_MAP_TEXTURE        = 0x8513,
		TEXTURE2D                       = 0x0DE1,
	};



}
#endif